package main

import (
	"fmt"
)

//func main() {
//	num1, num2 := 10, 11
//	var res int
//	//普通的函数定义
//	res = _max(num1, num2)
//	fmt.Printf("two number is: %d ,%d ,the bigger is  %d", num1, num2, res)
//	//交换两个值，函数可以返回多个值
//	str1, str2 := swap("Good", "Bad")
//	fmt.Println(str1, str2)
//}

//func _max(a, b int) int {
//	var result int
//	if a > b {
//		result = a
//	} else {
//		result = b
//	}
//	return result
//}

//func swap(x, y string) (string, string) {
//	return y, x
//}

//函数的闭包，说明，其实跟js的差别并不是很大

func getSequence() func() int {
	i := 0
	return func() int {
		i += 1
		return i
	}
}

func main() {
	/* nextNumber 为一个函数，函数 i 为 0 */
	nextNumber := getSequence()

	/* 调用 nextNumber 函数，i 变量自增 1 并返回 */
	fmt.Println(nextNumber())
	fmt.Println(nextNumber())
	fmt.Println(nextNumber())

	/* 创建新的函数 nextNumber1，并查看结果 */
	nextNumber1 := getSequence()
	fmt.Println(nextNumber1())
	fmt.Println(nextNumber1())
}
